/*************************************************
*      Filename: calculate_total_evalation.h
*        Coding: utf-8
*        Author: Futuan Li
*         Email: lifutuan@galasports.net
*      HomePage: http://www.galasports.net
*  Copyright(C): InnoReal Technology Co.,Ltd.
*       Version: 0.0.1
*    CreateDate: 2018-04-24 16:42:24
*    LastChange: 2018-06-25 20:18:29
*          Desc: 
*       History: 
*************************************************/

#pragma once
#ifndef _CALCULATE_TOTAL_EVALATION_H_
#define _CALCULATE_TOTAL_EVALATION_H_

#include <cstdio>
#include <vector>

//#include "mesh_deformation.h"
#include "distance_twomesh.h"
#include "input_data.h"
#include "gn_solver.h"

//using namespace Eigen;  


class Calculate_Total_Evalation
{
 public:
  void Cal_Evalation(std::vector<int> data, int sf_sum);
  void Cal_Evalation_all(std::vector<int> data, int sf_sum);
  void Cal_Evalation_Update(int data_front, int data_next,  int sf_sum); //update distance function locally
  void Cal_Evalation_Update_TP(std::vector<int> data, int moving_position, int bool_n,  int sf_sum);
  void Cal_Evalation_Update_TPN(std::vector<int> data, int moving_position, int bool_n, int sf_sum, int revome_N);
  void Cal_Evalation_Update_TPN_second(std::vector<int> data, int moving_position, int bool_n, int sf_sum, int revome_N);


  void Cal_Evalation_Interp_P(std::vector<int> data, int interp_dis_pos, int order,  int sf_sum);
  void Cal_Evalation_Slack_P(std::vector<int> data, int sf_sum);

  std::vector<std::vector<double> > evalate_dis;
  std::vector<double> evalate_dis_one;
  std::vector<std::vector<double> > evalate_dis_four;
  std::vector<double> evalate_dis_four_opt;//pass
  std::vector<std::vector<double> > evalate_dis_removeN;


  int interp_position;          //数据存储的是插值帧所在的编号
  int slack_position;         //数据存储的是放松关键帧的编号
};




























#endif // _CALCULATE_TOTAL_EVALATION_H_
